package datastructure.deque;

/**
 * 双端队列接口
 *      D   ==    double [双倍]
 *      e   ==    ended [端]
 *      que ==    queue [队列]
 *
 * @author 杨 强
 * @package datastructure.deque
 * @createTime 2023-03-14 22:18
 */
public interface Deque<E> {

    /**
     * 头部添加元素
     * @param e 元素
     * @return true添加成功  false添加失败
     */
    boolean offerFirst(E e);

    /**
     * 尾部添加元素
     * @param e 元素
     * @return true添加成功  false添加失败
     */
    boolean offerLast(E e);

    /**
     * 弹出头部元素
     * @return 元素值
     */
    E pollFirst();

    /**
     * 弹出尾部元素
     * @return 元素值
     */
    E pollLast();

    /**
     * 查看头部元素
     * @return 元素主
     */
    E peekFirst();

    /**
     * 查看尾部元素
     * @return 元素值
     */
    E peekLast();

    /**
     * 是否为空
     * @return true空 false未空
     */
    boolean isEmpty();

    /**
     * 是否满
     * @return true满  false未满
     */
    boolean isFull();
}
